// 导入Vuex的组件
import Vue from 'vue'
import Vuex from 'vuex'
// 导入Vuex的拆分组件
import listModule from '@/store/list.js'
import detail from '@/store/detail.js'
import demo from '@/store/demo.js'
import demo1 from '@/store/demo1.js'
Vue.use(Vuex)
// 导出store实例化对象(Vuex) 调用时 $store
export default new Vuex.Store({
  // // state: 储存组件的所有数据
  // state: {
  //   // demo: '你好',
  //   // abc: 1,
  //   // list: [] // 储存异步获取到的数据
  // },
  // // mutations进行数据的变更(本质上是方法 方法名称自定义 mutations函数内部负责处理的变更操作)
  // mutations: {
  //   // increment (state, payload) {
  //   //   // 参数一 表示state的数据(state里面的数据)
  //   //   // 参数二 payload表示需要修改的数据(触发mutation时传递过来)
  //   //   state.abc = state.abc + payload
  //   // },
  //   // increment1 (state, payload) {
  //   //   // 参数一 表示state的数据(state里面的数据)
  //   //   // 参数二 payload表示需要修改的数据(触发mutation时传递过来)
  //   //   state.abc = state.abc - payload
  //   // },
  //   // updateList (state, payload) {
  //   //   // payload参数二是 获取数据的参数
  //   //   state.list = payload // 把数据 赋值给state储存
  //   // }

  // },
  // // actions是固定的，用于定义异步操作的动作（函数）
  // actions: {

  //   // // 定义了一个action，用于查询接口数据 需要设置async取消异步 同步数据
  //   // async queryData (context, payload) {
  //   //   // 参数一 constext 类似this.$store 用来实例化 actions
  //   //   // 参数二 payload接收传来的数值
  //   //   // 1. 调用接口获取数据
  //   //   const ret = await axios.get('http://test.zjie.wang/tab')
  //   //   // 2. 必须触发mutation修改list的值
  //   //   // context类似于this.$store 实例化 actions
  //   //   // commit 是触发 mutations 里面的函数 连接同步数据 mutations中 把数据进行修改
  //   //   // 把数据设置到 mutations的 updateList方法名中 进行修改数据
  //   //   context.commit('updateList', ret.data.list)
  //   // }
  // },
  // // 相当于state的计算属性（基于State处理成另外一份数据）
  // getters: {

  //   // getPartList (state) {
  //   //   return state.list.filter(item => {
  //   //     return item.id > 1
  //   //   })
  //   // }
  // },
  modules: {
    list: listModule,
    detail,
    demo1,
    demo
  }
})
